if(CBOT_STATIC)
    add_library(CBot STATIC)
else()
    add_library(CBot SHARED)
    install(TARGETS CBot
            LIBRARY DESTINATION ${COLOBOT_INSTALL_LIB_DIR}
            ARCHIVE DESTINATION ${COLOBOT_INSTALL_LIB_DIR}
            RUNTIME DESTINATION ${COLOBOT_INSTALL_BIN_DIR})
endif()

target_sources(CBot PRIVATE
    CBot.h
    CBotCStack.cpp
    CBotCStack.h
    CBotClass.cpp
    CBotClass.h
    CBotDebug.cpp
    CBotDebug.h
    CBotDefParam.cpp
    CBotDefParam.h
    CBotDefines.h
    CBotEnums.h
    CBotExternalCall.cpp
    CBotExternalCall.h
    CBotFileUtils.cpp
    CBotFileUtils.h
    CBotInstr/CBotBlock.cpp
    CBotInstr/CBotBlock.h
    CBotInstr/CBotBoolExpr.cpp
    CBotInstr/CBotBoolExpr.h
    CBotInstr/CBotBreak.cpp
    CBotInstr/CBotBreak.h
    CBotInstr/CBotCase.cpp
    CBotInstr/CBotCase.h
    CBotInstr/CBotCatch.cpp
    CBotInstr/CBotCatch.h
    CBotInstr/CBotCondition.cpp
    CBotInstr/CBotCondition.h
    CBotInstr/CBotDefArray.cpp
    CBotInstr/CBotDefArray.h
    CBotInstr/CBotDefBoolean.cpp
    CBotInstr/CBotDefBoolean.h
    CBotInstr/CBotDefClass.cpp
    CBotInstr/CBotDefClass.h
    CBotInstr/CBotDefFloat.cpp
    CBotInstr/CBotDefFloat.h
    CBotInstr/CBotDefInt.cpp
    CBotInstr/CBotDefInt.h
    CBotInstr/CBotDefString.cpp
    CBotInstr/CBotDefString.h
    CBotInstr/CBotDo.cpp
    CBotInstr/CBotDo.h
    CBotInstr/CBotEmpty.cpp
    CBotInstr/CBotEmpty.h
    CBotInstr/CBotExprLitBool.cpp
    CBotInstr/CBotExprLitBool.h
    CBotInstr/CBotExprLitChar.cpp
    CBotInstr/CBotExprLitChar.h
    CBotInstr/CBotExprLitNan.cpp
    CBotInstr/CBotExprLitNan.h
    CBotInstr/CBotExprLitNull.cpp
    CBotInstr/CBotExprLitNull.h
    CBotInstr/CBotExprLitNum.cpp
    CBotInstr/CBotExprLitNum.h
    CBotInstr/CBotExprLitString.cpp
    CBotInstr/CBotExprLitString.h
    CBotInstr/CBotExprRetVar.cpp
    CBotInstr/CBotExprRetVar.h
    CBotInstr/CBotExprUnaire.cpp
    CBotInstr/CBotExprUnaire.h
    CBotInstr/CBotExprVar.cpp
    CBotInstr/CBotExprVar.h
    CBotInstr/CBotExpression.cpp
    CBotInstr/CBotExpression.h
    CBotInstr/CBotFieldExpr.cpp
    CBotInstr/CBotFieldExpr.h
    CBotInstr/CBotFor.cpp
    CBotInstr/CBotFor.h
    CBotInstr/CBotFunction.cpp
    CBotInstr/CBotFunction.h
    CBotInstr/CBotIf.cpp
    CBotInstr/CBotIf.h
    CBotInstr/CBotIndexExpr.cpp
    CBotInstr/CBotIndexExpr.h
    CBotInstr/CBotInstr.cpp
    CBotInstr/CBotInstr.h
    CBotInstr/CBotInstrCall.cpp
    CBotInstr/CBotInstrCall.h
    CBotInstr/CBotInstrMethode.cpp
    CBotInstr/CBotInstrMethode.h
    CBotInstr/CBotInstrUtils.cpp
    CBotInstr/CBotInstrUtils.h
    CBotInstr/CBotLeftExpr.cpp
    CBotInstr/CBotLeftExpr.h
    CBotInstr/CBotLeftExprVar.cpp
    CBotInstr/CBotLeftExprVar.h
    CBotInstr/CBotListArray.cpp
    CBotInstr/CBotListArray.h
    CBotInstr/CBotListExpression.cpp
    CBotInstr/CBotListExpression.h
    CBotInstr/CBotListInstr.cpp
    CBotInstr/CBotListInstr.h
    CBotInstr/CBotLogicExpr.cpp
    CBotInstr/CBotLogicExpr.h
    CBotInstr/CBotNew.cpp
    CBotInstr/CBotNew.h
    CBotInstr/CBotParExpr.cpp
    CBotInstr/CBotParExpr.h
    CBotInstr/CBotPostIncExpr.cpp
    CBotInstr/CBotPostIncExpr.h
    CBotInstr/CBotPreIncExpr.cpp
    CBotInstr/CBotPreIncExpr.h
    CBotInstr/CBotRepeat.cpp
    CBotInstr/CBotRepeat.h
    CBotInstr/CBotReturn.cpp
    CBotInstr/CBotReturn.h
    CBotInstr/CBotSwitch.cpp
    CBotInstr/CBotSwitch.h
    CBotInstr/CBotThrow.cpp
    CBotInstr/CBotThrow.h
    CBotInstr/CBotTry.cpp
    CBotInstr/CBotTry.h
    CBotInstr/CBotTwoOpExpr.cpp
    CBotInstr/CBotTwoOpExpr.h
    CBotInstr/CBotWhile.cpp
    CBotInstr/CBotWhile.h
    CBotProgram.cpp
    CBotProgram.h
    CBotStack.cpp
    CBotStack.h
    CBotToken.cpp
    CBotToken.h
    CBotTypResult.cpp
    CBotTypResult.h
    CBotUtils.cpp
    CBotUtils.h
    CBotVar/CBotVar.cpp
    CBotVar/CBotVar.h
    CBotVar/CBotVarValue.h
    CBotVar/CBotVarArray.cpp
    CBotVar/CBotVarArray.h
    CBotVar/CBotVarBoolean.cpp
    CBotVar/CBotVarBoolean.h
    CBotVar/CBotVarByte.h
    CBotVar/CBotVarChar.h
    CBotVar/CBotVarClass.cpp
    CBotVar/CBotVarClass.h
    CBotVar/CBotVarDouble.h
    CBotVar/CBotVarFloat.cpp
    CBotVar/CBotVarFloat.h
    CBotVar/CBotVarInt.cpp
    CBotVar/CBotVarInt.h
    CBotVar/CBotVarLong.h
    CBotVar/CBotVarPointer.cpp
    CBotVar/CBotVarPointer.h
    CBotVar/CBotVarShort.h
    CBotVar/CBotVarString.cpp
    CBotVar/CBotVarString.h
    stdlib/Compilation.cpp
    stdlib/Compilation.h
    stdlib/FileFunctions.cpp
    stdlib/MathFunctions.cpp
    stdlib/StringFunctions.cpp
    stdlib/stdlib.h
    stdlib/stdlib_public.h
)
target_include_directories(CBot PUBLIC ${CMAKE_CURRENT_LIST_DIR}/..)
target_link_libraries(CBot PRIVATE Boost::headers)

if(COLOBOT_LINT_BUILD)
    add_fake_header_sources("src/CBot" CBot)
endif()
